package com.ehsy.statement;

import com.ehsy.common.ResponseVo;
import com.ehsy.model.Dept;
import com.ehsy.service.SnakeShapedFieldProcessingService;
import com.ehsy.util.JsonFormatUtils;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;

/**
 * @author YanZhen_Li
 * @version 1.0
 * @title A10蛇形字段处理
 * @description
 * @create 2024/6/18 15:49
 */
@SpringBootTest
public class A10下划线蛇形风格字段处理 {
    @Resource
    SnakeShapedFieldProcessingService service;

    /**
     * 方式1：我们的 Forest 官网推荐方法是使用 @JSONField 注解，但是我们公司不
     * 推荐使用
     *
     * 方式2：我发现我们使用FastJson的时候会自动把下环线的蛇形风格转换为驼峰风格
     * 但是我们如果用FastJson2的时候是没有这个功能的，风险提示：作为一个成年人应当
     * 独立决策并自行承担风险，我的任何建议并不作为您的决策标准，请谨慎使用。
     *
     * 方式3：自己重写一个反序列化工具来自定义处理，风险提示：作为一个成年人应当独
     * 立决策并自行承担风险，我的任何建议并不作为您的决策标准，请谨慎使用。
     */
    @Test
    public void test001() {
        Map<String,Object> map = new HashMap<>();
        map.put("id", 1);
        map.put("dept_name", "测试部门");
        map.put("dept_desc", "一个测试部门");
        map.put("dept_code", "D001");
        map.put("dept_status", 1);
        ResponseVo<String> test01 = service.test1(map);
        ResponseVo<Dept> test02 = service.test2(map);
        System.out.println(test01.getData());
        System.out.println(test02);
    }

    @Test
    public void test002() {
        // 略...
    }

    @Test
    public void test003() {
        Map<String,Object> map = new HashMap<>();
        map.put("id", 1);
        map.put("dept_name", "测试部门");
        map.put("dept_desc", "一个测试部门");
        map.put("dept_code", "D001");
        map.put("dept_status", 1);
        ResponseVo<String> test01 = service.test1(map);
        String json = test01.getData().getParams();
        System.out.println(json);
        Dept dept = JsonFormatUtils.toObjectByUnderline(json, Dept.class);
        System.out.println(dept);
    }

}
